home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / tools / rb / jlcd100.lzh / TNB_FSW / TMS062.Lzh / TEMTST.c < prev    next >
Text File  |  1994-12-15  |  3KB  |  138 lines

  1. /*
  2.  
  3.     TEMCALL 対応ドライバー用
  4.             サンプル&テスター
  5.  
  6.                TEMTST.x
  7.  
  8.  
  9.  
  10.     実行中[SHIFT]を押していると文字表示が無くなるので
  11.     マウスの動きがスムースになります。
  12.  
  13. */
  14.  
  15. #define        RGB(R,G,B)    ( ((R)<<6) | ((G)<<11) | ((B)<<1) )
  16.  
  17. /***  マウスカーソルスプライト設定 ***/
  18. char    ca[]={    3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  19.         3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
  20.         3,2,2,3,0,0,0,0,0,0,0,0,0,0,0,0,
  21.         3,2,2,2,3,0,0,0,0,0,0,0,0,0,0,0,
  22.         3,2,2,2,2,3,0,0,0,0,0,0,0,0,0,0,
  23.         3,2,2,2,2,2,3,0,0,0,0,0,0,0,0,0,
  24.         3,2,2,2,2,2,2,3,0,0,0,0,0,0,0,0,
  25.         3,2,2,2,2,2,2,2,3,0,0,0,0,0,0,0,
  26.         3,2,2,2,2,2,3,3,3,3,0,0,0,0,0,0,
  27.         3,2,2,3,3,2,3,0,0,0,0,0,0,0,0,0,
  28.         3,2,3,0,3,2,2,3,0,0,0,0,0,0,0,0,
  29.         3,3,0,0,3,2,2,3,0,0,0,0,0,0,0,0,
  30.         3,0,0,0,0,3,2,2,3,0,0,0,0,0,0,0,
  31.         0,0,0,0,0,3,2,2,3,0,0,0,0,0,0,0,
  32.         0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,
  33.         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  34. };
  35. /*** ドライバー有無チェック用 ***/
  36. int    de[20];
  37. /*** 各マウス座標記憶 ***/
  38. int    X[20],Y[20];
  39.  
  40.  
  41. /******************************************************************/
  42. main()
  43. {
  44. int    l,i,s,p,b,u,j,m,n,q;
  45. int    x,y,xm,ym;
  46. int    spp;
  47. screen(1,3,1,0);
  48. cls();
  49. printf("\nTNB製作所 EXTENSION MOUSE CALL TESTER ver 0.50\n");
  50. sp_def(1,ca,1);
  51. SP_ON();
  52. SP_COLOR(3,RGB(31,31,31),1);
  53. SP_COLOR(2,RGB(16,16,16),1);
  54. SP_COLOR(3,RGB(31,31,31),2);
  55. SP_COLOR(2,RGB( 0, 0,31),2);
  56. SP_COLOR(3,RGB(31,31,31),3);
  57. SP_COLOR(2,RGB(31, 0, 0),3);
  58. SP_COLOR(3,RGB(31,31,31),4);
  59. SP_COLOR(2,RGB(31, 0,31),4);
  60. /*--- マウスカーソルを消す ---*/
  61. mouse(4);
  62. mouse(2);
  63. /*                IOCSのマウスカーソルはどのマ
  64.                 ウスでも動いてしまうので別々
  65.                 のデバイスにより動かすのは不
  66.                 可能。
  67. */
  68. /*--- スプライトを見えないところへ ---*/
  69. for(i=0;i<128;i++)
  70.     sp_move(i,-16,-16,'NASI');
  71. /*--- まず、TEMCALL対応 ID DRIVER チェック ---*/
  72. for(i=0;i<=12;i++){
  73.     de[i]=MS_SEL(0x100+i);
  74. }
  75. /*                de[ID]=='TEMC'が入っていれば、
  76.                 そのIDにはTEMCALL対応のデバイ
  77.                 スがあるということになります。
  78. */
  79. /*--- マウスカーソルが乱れているので再設定 ---*/
  80. MS_SEL(0);
  81. /*                ほとんどの場合マウスカーソルが
  82.                 めちゃくちゃになりますので、
  83.                 必ず設定してください。
  84. */
  85. /*--- TEMCALL 初期化 ---*/
  86. for(i=0;i<=12;i++){
  87.     if ( de[i]=='TEMC' )
  88.         MS_LIMIT('TE','MC',0,i);
  89. }
  90. /*                メインループ前(つかう前ヤ、コール間隔が極
  91.                 端に開いた時)に、一度初期化ということで、
  92.                 コールしておくこと。でないとめちゃくちゃな
  93.                 データが出ることであろう。
  94. */
  95. /*--- [ESC]が押されるまでループ ---*/
  96. while( (BITSNS(0)&2)==0 ){
  97.     locate(0,3);
  98.     foo(0);
  99.     foo(1);
  100.     foo(2);
  101.     foo(3);
  102.     foo(4);
  103.     foo(10);
  104.     foo(11);
  105.     foo(12);
  106. }
  107. mouse(0);
  108. }
  109. /*********************************************************************/
  110. void    foo(ID)
  111. int    ID;
  112. {
  113. int    l,i,s,p,b,u,j,m,n,q;
  114. int    x,y,xm,ym;
  115. m=de[ID];
  116. n=MS_LIMIT('TE','MC',0,ID);
  117. if ( (BITSNS(0xE)&1)==0 )
  118.     printf("ID%2d = %08X [%08X]\n",ID,m,n );
  119. if ( m=='TEMC' ){/*デバイスチェック*/
  120.     /*** 個別で座標を管理 ***/
  121.     xm=(int)(char)(n>>8);
  122.     ym=(int)(char)(n);
  123.     if ( xm || ym ){
  124.         X[ID]+=xm;
  125.         if ( X[ID]<0 ) X[ID]=0;
  126.         if ( X[ID]>=512-16 ) X[ID]=512-16-1;
  127.         Y[ID]+=ym;
  128.         if ( Y[ID]<0 ) Y[ID]=0;
  129.         if ( Y[ID]>=512-16 ) Y[ID]=512-16-1;
  130.     }
  131.     /*** スプライト設定 ***/
  132.     i=0x101;
  133.     if ( n&0xFF000000 ) i+=0x200;
  134.     if ( n&0x00FF0000 ) i+=0x100;
  135.     sp_set(ID,16+X[ID],16+Y[ID],i,3);
  136. }
  137. }
  138.